package org.javahispano.javacup.tacticas_aceptadas.sjvc.SubTacticasDefensa;
import org.javahispano.javacup.modelo.*;

import org.javahispano.javacup.tacticas_aceptadas.sjvc.Comandos;
import org.javahispano.javacup.tacticas_aceptadas.sjvc.SituacionPartidoSergio;
import org.javahispano.javacup.tacticas_aceptadas.sjvc.SubTacticaDefensa;


import java.util.LinkedList;
import java.util.List;

public class STDDespejar extends SubTacticaDefensa {

	protected int kJugadoresAPorElBalon = 3;
	
	public STDDespejar(){

	}
	
	@Override
	protected List<Comando> _ejecutar(SituacionPartido sp, SituacionPartidoSergio spAnterior) {
		
		List<Comando> comandos = new LinkedList<Comando>();
		
		//Si tenemos el control del balon...
		int indiceJugadorConBalon = sp.balon().indiceMasCercano(sp.misJugadores());
		if(sp.balon().distancia(sp.misJugadores()[indiceJugadorConBalon]) <= Constantes.DISTANCIA_CONTROL_BALON){
			Posicion posicionDondeChuto = new Posicion(sp.misJugadores()[indiceJugadorConBalon].getX(), Constantes.centroArcoSup.getY());
			//Si hay un rival cerca, la paso, sino corro
			if(sp.balon().distancia(sp.rivales()[sp.balon().indiceMasCercano(sp.rivales())]) <= Constantes.DISTANCIA_CONTROL_BALON * 2)
				comandos.add(new ComandoGolpearBalon(indiceJugadorConBalon, posicionDondeChuto, 1, true));
			else
			{
				comandos.add(new ComandoIrA(indiceJugadorConBalon, posicionDondeChuto));
				comandos.add(new ComandoGolpearBalon(indiceJugadorConBalon));
			}
		}
		else
			Comandos.IrAPorElBalon(sp, kJugadoresAPorElBalon, comandos);
		
		return comandos;
	}
	
}